草庐IT

c++ - QMap 和 std::unique_ptr

全部标签

c++ - visual c++ 2013 是否有使用旧方言的选项(如 gcc 的 -std=c++98)?

我有一些代码可以在VisualC++2013中编译,但我被告知它不能在VC++2010中构建(因为它使用了微妙的c++11ism)。当然,我要做的是用两个编译器进行测试,但是......没有办法在VisualC++2013中关闭c++11并让它只接受c++08,正如我认为gcc的-std=c++98选项那样? 最佳答案 对于这种情况,唯一的方法是在项目->属性->常规中将PlatformToolset更改为VisualStudio2010(v100)。一旦你改变它,你将在VS2013下运行VC++2010编译器。

c++ - 释放存储在 std::queue 中的堆指针

考虑这段代码:classFoo;std:queueq;//allocateandaddobjectstothequeuefor(inti=0;i通过单步执行,我可以看到Foo析构函数在每个对象被删除时被调用,所以我希望进程内存使用量会随着每次删除发生而下降-但事实并非如此。在我的应用程序中,队列用于生产者/消费者线程,内存使用量一直在增长。我发现恢复内存的唯一方法是在我从队列中弹出所有项目时将队列交换为空队列:q.swap(std::queue());如果我使用vector而不是队列,删除存储的对象会立即降低进程内存使用量。任何人都可以解释为什么队列不是那样的吗?编辑以从评论中澄清:我

c++ - 如何在 rstudio 上为使用子目录内 src 文件夹中的 C/C++ 文件的包构建和加载共享库?

我有一个正在处理的R包,它包含在src文件夹下用C和C++编写的代码。目前,该包在Rstudio上编译和工作,因为它遵循默认目录结构。随着项目的构建,我希望能够在src下的子文件夹中组织我的代码。按照“编写R扩展”-在子目录下编译的指示,我创建了一个名为“test”(/src/test)的文件夹,其中现在包含我的所有文件(*.c、*.cpp、*.h)和像这样修改我的Makevars-SOURCES_C=$(wildcardtest/*.c)SOURCES_CPP=$(wildcardtest/*.cpp)PKG_CPPFLAGS=-I${R_HOME}/include-I.PKG_LI

c++ - 从源代码编译后未安装 boost ptr_container 库

我已经将boost库从以前的1.54(svn源)更新到1.57(git源)。尽管我使用了相同的./b2参数,但目标目录不包含ptr_container库。具有克隆存储库的目录在此路径上正确包含ptr_container库:boost_git/libs/ptr_container我正在使用以下命令构建它:./b2--install--prefix=$SHL_PATH/boost-sNO_BZIP2=1-sNO_ZLIBruntime-link=sharedlink=shared-j2install但没有成功。编辑:似乎只有从git构建时才会出现问题。当我从boost站点下载zip包时,目

c++ - std::basic_fstream::put() 无效

我有以下代码:#include#includeintmain(intargc,char*argv[]){if(argc!=2){std::cout"stream;stream.open(argv[1],std::fstream::out);stream.put('T');stream.put('E');stream.put('S');stream.put('T');stream.flush();stream.close();return0;}正在创建文件,但当我在编辑器中打开它时,里面什么也没有。我的编译器是gccversion4.8.2(Ubuntu4.8.2-19ubuntu1)。

c++ - 函数参数求值顺序

在C和C++中,是否有固定的函数参数计算顺序?我的意思是,标准怎么说?是从左到右还是从右到左?我从书中得到的信息令人困惑。函数调用是否有必要使用stackonly实现?C和C++标准对此有何规定? 最佳答案 C和C++是两种完全不同的语言;不要假设相同的规则总是适用于两者。但是,在参数评估顺序的情况下:C99:6.5.2.2Functioncalls...10Theorderofevaluationofthefunctiondesignator,theactualarguments,andsubexpressionswithinth

c++ - 在 c/c++ 中编辑从 stdin 打印在 stdout 上的文本

我有以下问题:如何在我的程序中打印文本,以便我可以对其进行编辑?例如,程序打印到标准输出:C:\\BlaBlaBla\file.txt我可以按下退格键,编辑这段文字:C:\\BlaBlaBla\file_1.txt我很乐意提供任何信息。 最佳答案 获得命令行编辑的一种方法是使用GNUreadline提供的功能图书馆。 关于c++-在c/c++中编辑从stdin打印在stdout上的文本,我们在StackOverflow上找到一个类似的问题: https://s

c++ - 不完整类型的 std::unique_ptr 无法编译

我将pimpl-idiom与std::unique_ptr结合使用:classwindow{window(constrectangle&rect);private:classwindow_impl;//definedelsewherestd::unique_ptrimpl_;//won'tcompile};但是,我在的第304行收到关于使用不完整类型的编译错误:Invalidapplicationof'sizeof'toanincompletetype'uixx::window::window_impl'据我所知,std::unique_ptr应该能够与不完整的类型一起使用。这是lib

python - 支持 C 和 Python 之间的跨语言 (c) 标签的代码编辑器

我拥有的是大量的C代码和一堆swig包装器,用于将所有函数导出到python中。我们喜欢使用python进行测试,它很棒,但我的问题是似乎没有任何编辑器可以在python和C之间共享标签。我想要的是在*.py文件中的函数上按ctrl+单击(或任何快捷方式),然后让它转到*.c文件中的函数定义。Geany似乎在这方面做得不错,但它有一些局限性(gdb支持不佳等)。Eclipse、netbeans、QtCreator都是很好的C编辑器(creator是我的最爱),但它们不支持跨语言标签。Eclipse特别支持PyDev中的python,但python中的标签与C中的标签完全分开,我似乎找不

c++ - 如何防止 libwebsockets 客户端超时

我正在尝试使用libwebsockets创建一个C++websocket客户端,但由于超时,我无法建立连接。我已经剥离了测试的内容,这是我用来建立连接的内容:协议(protocol)staticintdefaultCallback(structlibwebsocket_context*context,structlibwebsocket*wsi,enumlibwebsocket_callback_reasonsreason,void*user,void*in,size_tlen){return0;}staticstructlibwebsocket_protocolsprotocols[